extends SimpleHealthBar
class_name PlayerHealthBar

# 玩家专用血条组件
# 与敌人血条不同的外观和行为

func _ready():
	# 调用父类设置
	super._ready()

func setup_health_bar():
	# 玩家血条的特殊配置（在调用父类之前设置）
	bar_width = 32  # 增加宽度，让血条更明显
	bar_height = 4  # 增加高度，让血条更容易看清
	
	# 调用父类设置
	super.setup_health_bar()
	
	# 玩家血条的特殊位置调整
	position = Vector2(-bar_width/2, -bar_height - 8)  # 玩家血条稍微离角色远一点
	
	# 玩家血条的特殊外观
	if background_sprite:
		background_sprite.modulate = Color(0.1, 0.1, 0.1, 0.7)  # 深色背景
	
	# 玩家血条默认显示
	visible = true

func get_health_color() -> Color:
	var health_ratio = float(current_health) / float(max_health) if max_health > 0 else 0.0
	
	# 玩家血条使用经典的红绿色方案
	if health_ratio > 0.6:
		return Color(0.2, 0.8, 0.2)  # 亮绿色
	elif health_ratio > 0.3:
		return Color(0.9, 0.9, 0.2)  # 黄色
	else:
		return Color(0.9, 0.2, 0.2)  # 红色

# 玩家血条始终显示，不自动隐藏
func show_health_bar():
	visible = true
	if modulate.a < 1.0:
		var tween = create_tween()
		tween.tween_property(self, "modulate:a", 1.0, 0.2)

# 玩家血条不会自动隐藏（只有死亡时才隐藏）
func hide_health_bar(delay: float = 0.0):
	# 玩家血条通常不隐藏，除非明确调用
	if delay > 0:
		var tween = create_tween()
		tween.tween_interval(delay)
		tween.tween_property(self, "modulate:a", 0.0, 0.3)
		tween.tween_callback(func(): visible = false)
	else:
		visible = false

# 玩家受伤时的血条动画更温和
func animate_damage():
	if not health_sprite:
		return
	
	var tween = create_tween()
	# 玩家受伤时血条轻微闪烁
	tween.tween_property(health_sprite, "modulate", Color.WHITE, 0.15)
	tween.tween_property(health_sprite, "modulate", get_health_color(), 0.15)

# 添加边框效果（可选）
func add_border_effect():
	if background_sprite:
		var border = NinePatchRect.new()
		add_child(border)
		border.texture = background_sprite.texture
		border.size = Vector2(bar_width + 2, bar_height + 2)
		border.position = Vector2(-1, -1)
		border.modulate = Color.WHITE
		border.z_index = -1 
